package shuaige.jdk.多线程.base.线程类方法使用示例;

/**
 * join方法通常由使用线程的程序调用，以将大问题划分为许多小问题，每个小问题分配一个线程。当所有的小问题都得到处理后，再调用主线程来进一步操作。
 */
public class 一直执行直到线程死亡 implements Runnable {

    public static void main(String[] args) throws InterruptedException {
        // 启动子线程
        for (int i = 0; i < 100; i++) {
            if (i == 20) {
                Thread jt = new Thread(new 一直执行直到线程死亡(), "抢占线程");
                jt.start();
                // main线程调用了jt线程的join()方法，main线程
                // 必须等jt执行结束才会向下执行
                jt.join();
                // 最多等待millis毫秒该线程终止。 超时为0意味着永远等待。
                // jt.join(1000);
                // 最多等待millis毫秒加上nanos纳秒该线程死亡。
                // jt.join(1000, 2000);
            }
            System.out.println("主线程：" + "  " + i);
        }
    }

    @Override
    public void run() {
        Thread thread = Thread.currentThread();
        for (int i = 0; i < 100; i++) {
            System.out.println(thread.getName() + "  " + i);
        }
    }

}